原來串列的操作有這麼多小技巧,讓我們繼續看下去。Licnesed by Adobe Stock
Meiko:「Jason,我把這兩個星期,都放在同一個串列裡面,可是我要怎麼知道我花最多和最少錢是多少金額啊?」
Jason:「看來,你越來越有興趣囉,這個問題很簡單,你看先前你已經用 extend 的方式,把 spendList2 和 spendList1 綁在一起了!」
spendList1=[205,350,520,240,330,180,2000]
spendList2=[180,250,450,300,220,1000,1500]
spendList1.extend(spendList2)
print (spendList1)
Jason:「但我為了接下來容易跟你解釋程式在做什麼,所以我要先把先前 spendList1 和 spendList2 綁在一起的資料指定給另外一個 list 叫做 spendListTotal。」
spendListTotal=spendList1.copy()
print (spendListTotal)
Meiko:「我發現這行跟我想的不太一樣,你先前說如果要指定特定的值,直接把數值用等號設定成某個值就好,可是這行為麼在指定串列的時候,會多了一個 .copy() 的做法?
Jason :「我主要的是要把 spendList1 複製一份給 spendListTotal 當然你要直接指定,也是可以唷!」
Jason:「那我們就來看一下你的消費吧!比如說,你剛提的問題,想要排序 過去兩週的花費。
spendListTotal=spendList1.sort()
Meiko:「帥耶,這樣看起來,我這兩週花最少錢的時候,金額是 180 元,最多的話,是2000 元。對了,那如果我想要把 2000 元放在最前面,要怎麼做?花費最高的,放在最前面可以警惕我自己。」
Jason:「你只要在 .sort() 裡面,加入 reverse=True,就可以了!」
spendListTotal=spendList1.sort(reverse=True)
Meiko:「挺方便的耶。不過 Jason,你跟我講了這些做法,有沒有更快的方法,可以知道我前兩週花費最多和最少的呀,不然我眼睛還要找第一個和最後一個,還是蠻累的。歐,對了,還有總共的花費也麻煩幫我算一下。」
Jason:「當然沒問題拉,Python 程式內建最大值max()
最小值min()
,還有sum()
,你想要做的,都可以做得到,你把串列放到max()
裡面,就可以囉!
print (max(spendListTotal))
print (min(spendListTotal))
print (sum(spendListTotal))
Meiko:「看起來沒算錯耶,而且好快就可以讓我知道總共花了多少錢!」
Jason:「對啊,而且程式不只能夠幫你排序數字,如果你的字串裡面是英文單字,它還可以依照英文單字的第一個字母排序唷。」
Meiko:「是唷,那我可以寫下我最愛的英文歌手名字,然後程式就會幫我排列順序了嗎?有時候沒有排序過的內容,就會讓我心裡覺得很阿雜。」
Jason:「可以呀,你要不要試試看,把它們放到 singerName,再試試看用.sort() 可以做什麼?
singerName=['Taylor','Bruno','Justin','Robyn','Andra']
print (singerName)
singerName.sort()
print (singerName)
Meiko:「哇!Python 真厲害,原本我輸入的歌手名字沒有照順序,用了 .sort() 真的就按照英文字母 A-Z 去排序了。」
Jason:「對啊,我在順便教你兩個小技巧,如果你不想要變動原來的串列,你可以用
singerNameSort= sorted(singerName)
Jason:「這樣你就不會改變原本 singerName 裡面的順序囉,你之後想要用 singerName 還是可繼續用。」
Jason:「還有呀,如果你想要把串列裡面的順序反轉的話,你可以這樣用
singerName.reverse()
print (singerName)
比較一下,你原本打的內容,你會發現,’Taylor’ 是在串列中的第一個位置,使用 reverse() 之後,它就會被排到最後一個位置囉。」
Meiko:「你教的這 2 個技巧蠻厲害的,可是我現在不知道能幹嘛。」
Jason:「也是,等以後資料量大的時候,你就會常用到排序,以及反轉的功能,不用著急!」
Meiko:「對了,如果以後我喜歡的歌手名字變多了,有沒有能快一點確認某個歌手在我的 singerName 裡面啊?」
Jason:「好問題,你可以先確認歌手有沒有在串列裡面,比如說,如果你打了一個不在 singerName 裡面的名字,程式也會告訴你喲!」
print ("Tom" in singerName)
print ("Bruno" in singerName)
Jason:「像上面的例子,Tom 不在你的 singerName 中,所以印出 False,而 Bruno 在你的 singerName 中,所以印出 True。」
Meiko:「這樣蠻聰明的耶,我就不用一個個的比對!」
Jason:「然後呀,如果你想要知道,你原本把 Bruno Mars 擺在哪一個位置,你可以用 .index() 的方式,讓程式告訴你,像這樣
print (singerName.index("Bruno"))
Meiko:「那如果,我想要把某個歌手移除呢?有時候一直聽同一個人唱也是會覺得有點膩,想要換新的口味。」
Jason:「還蠻直覺的,你只要用 remove 就可以了,像這樣
singerName.remove('Justin')
Jason:「我們看一下完整的名單,當我把'Justin'移除後會變成什麼樣子?」
singerName=['Taylor','Bruno','Justin','Robyn','Andra']
singerName.remove('Justin')
print (singerName)
Jason:「你看,把原本的 singerName 串列,下面多一行 remove,就可以把特定的歌手名字拿掉囉!」
singerName.pop()
print (singerName)
Meiko:「這樣還蠻簡單的耶!.pop() 的意思,就是把最後一個名字彈開的意思嗎?」
Jason:「哈哈,如果這樣你比較容易記得話,也可以這樣想囉!」
我大寶寶~拉,今天還沒把所有的list
內容講完,但有沒有覺得學了很多招數來處理資料?可以自己設定不同的資料內容到串列裡面,把今天學會的技巧實際演練一次。資料可以是你的消費記錄、最喜歡的球員表現,從自己關注的內容下手,才能學得又快又好唷!
歡迎登入留言跟我分享你的想法唷!(登入不麻煩,點一下 FB 登入就可以留言了!)
1.喜歡這樣方式學 Python 的朋友請留言『+1』
2.如果前面的內容忘記了,趕快看一下大寶寶這一系列的看對話學 Python 資料分析,用情境故事帶你入門的列表!就能夠繼續 Happy Coding 囉!